﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModelLayer;
using System.Data.SqlClient;
using System.Data;

namespace DBLayer
{
    public class DBPrice
    {
        private SqlConnection con;

        public DBPrice()
        {
            con = DBConnection.getInstance().getDBCon();
        }

        public List<Price> GetPrice(int showId)
        {
            List<Price> prices = new List<Price>();

            SqlDataReader reader = null;

            SqlParameter showIdParam = new SqlParameter("@ShowId", SqlDbType.Int, 10);
            showIdParam.Value = showId;

            SqlCommand com = new SqlCommand();
            com.Connection = con;

            com.CommandText = "SELECT id, Type, Price FROM Prices " +
                              "INNER JOIN Price_Show " +
                              "ON Prices.Id=Price_Show.Price_Id " +
                              "where Show_Id = @ShowId";

            com.Parameters.Add(showIdParam);

            try
            {
                reader = com.ExecuteReader();

                while (reader.Read())
                {
                    prices.Add(new Price(reader.GetInt32(0), reader.GetString(1), (float)reader.GetDecimal(2)));
                }
                reader.Close();

            }
            catch (SqlException e)
            {
                Console.WriteLine("Error: " + e);
            }
            
            return prices;
        }
    }

    #region Fixes! Total cheat mode.
    //Mellemrum mellem sidste tegn og " på hver linie.
    //ON Prices.Id=Price_Show.Show_Id ændret til ON Prices.Id=Price_Show.price_Id prøv at køre begge i SQL server etc. programmet.
    //fjernet '' omkring @ShowId, da db ellers tror at det er en streng, og ikke en variabel
    //com.CommandText = "SELECT Type, Price FROM Prices " +
    //                  "INNER JOIN Price_Show " +
    //                  "ON Prices.Id=Price_Show.price_Id " +
    //                  "WHERE Show_Id = @ShowId";

    //for at læse numeric ind fra db. Brug .GetDecimal, og cast det til en float.
    //prices.Add(new Price(reader.GetString(0), (float)reader.GetDecimal(1)));

    //husk at lukke, der kan kun være én åben af gangen.
    //reader.Close();

    #endregion
}


